iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
0
自我挑戰組

linux 能力upup系列 第 5

Day05 開機流程中的BIOS跟UEFI開機檢測程式

  • 分享至 

  • xImage
  •  

今天我們要來聊聊的部分是開機流程跟開機檢測程式的部分。

作業系統這個系統軟體的誕生,主要是為了讓電腦硬體系統的資源合理分配。作業系統會控制所有的硬體並提供核心功能,電腦就能因為這個特性,認識硬碟內的檔案系統,接下來就能讀取硬碟內的軟體檔案與執行該軟體來達成目的。
但是,上述我有提到,作業系統也是一種軟體,那電腦在開機錢是如何讀取這個軟體的呢?這個就是我們今天的主題開機程序的部分。

目前,主機系統在載入硬體驅動方面的程式,主要有早期的BIOS與新的UEFI兩種機制。

BIOS搭配MBR/GPT開機流程

BIOS就是電腦在開機的時候,第一個會主動執行的程式。接下來BIOS會去分析電腦裡有哪些儲存設備,BIOS會根據使用者的設定去取得能夠開機的硬碟,然後到那顆硬碟內部讀取第一個磁區的MBR位置。這個MBR位置會儲存最基本的開機管理程式。此時BIOS就完成它的工作了,接下來就輪到MBR上場接手。

簡單來說,整個開機流程可以整理成以下這幾點

-BIOS:開機主動執行的韌體,會認識第一個可以開機的裝置
-MBR:第一個可開機裝置的第一個磁區內的主要開機紀錄區塊,內部有開機管理程式
-開機管理程式(boot loader):一隻可讀取核心檔案來執行的軟體
-核心檔案:開始作業系統的功能

第二部分要稍微注意一下,如果分割表不是MBR而是GPT的話,BIOS也能夠從LBA0的MBR相容區塊讀取第一階段的開機管理程式碼,如果你的開機管理程式知道GPT的話,那麼使用BIOS也能夠順利讀取到作業系統核心。但是,如果開機管理程式不知道GPT的話,會直接無法開機的。

由我們前面聊到的部分,BIOS與MBR都是硬體本身會支援的功能,至於Boot loader則是作業系統安裝在MBR上面的一套軟體。以下我會稍微介紹Boot loader 主要負責的任務。

-提供選單:使用者可以選擇不同的開機項目,多重開機這個重要功能的部分
-載入核心檔案:直接指向可以開機的程式區段來開始作業系統
-轉交其他loader:將開機管理功能轉交給其他loader

前面兩點還算容易理解,這邊我會針對第三點的部分深入討論一下。
其實,開機管理程式除了可以安裝在MBR上,還可以安裝在每個分割槽的開機磁區喔......
基本上會有以下幾點特性

-每個分割槽都擁有自己的開機磁區
-實際可開機的核心檔案室放置到各個分割槽內的
-loader只會認識自己的系統槽內的可開機核心檔案,以及其他的loader
-loader可以直接指向或是間接將管理權轉交給另外一個管理程式

UEFI BIOS搭配GPT開機流程

BIOS其實不知道甚麼是GPT,只能透過GPT相容模式來讀寫磁碟裝置,還有一點,BIOS是16位元程式,與現階段作業系統接軌有一點效果不好,因此,UEFI這個統一可延伸韌體,介面就誕生了。
UEFI主要是想要取代BIOS,所以我們也把它稱為UEFI BIOS。
UEFI有幾個優點,像是使用的語言是C語言的部分,會比使用組合語言的BIOS開發更加容易。與傳統的BIOS不太一樣的是UEFI跟低階作業系統有得拚,用UEFI介面的主機,在開機的部分會比BIOS快上許多。
但是UEFI在資源管理上的效能比BIOS還弱,而且也沒有快取系統的部分,因此效能變得沒有辦法提升。
因此,效果華麗但是效能不佳。因此,UEFI大多用來作為啟動作業系統之前的硬體檢測、開機管理、軟體設計等目的,基本上難度會偏高,不建議這麼做。
一般來說,載入作業系統之後,UEFI便會停止工作,接下來將系統交給作業系統,與早期的BIOS差異不大。
由於過去cracker常常藉由開機階段來破壞系統進而取得系統控制權,為了處理這個情況,UEFI有一個安全啟動機制,代表即將被開機的作業系統必須要被UEFI所驗證,否則便無法順利開機。在某些時刻,可能需要將UEFI的安全啟動機制關閉,才能夠順利的進入Linux......
雖然UEFI可以直接去得GPT分割表,不過,還是擁有BIOS分割槽支援。而且,為了相容於windows系統,並提供其他第三方廠商所使用的UEFI應用程式儲存空間,你必須格式化一個vfat檔案,讓其他UEFI會比較方便執行。

以上就是本人介紹開機流程的部分,如果有缺漏的部分,也麻煩大家多指教


上一篇
Day04 甚麼是磁碟分割
下一篇
Day06 linux的檔案權限I
系列文
linux 能力upup30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言